function handleConditionalElements(conditionalElements,vm){
    const elementsData = conditionalElements.map(element=>{
        const placeholder = document.createComment('placeholder');
        element.parentNode.insertBefore(placeholder,element);
        element.parentNode.removeChild(element);
        return {
            placeholder,//为此元素创建的占位符
            element,//虽然此元素现在已经从页面里删除了， 但内存里还是存在的，以后还可以用
            evaluate:createEvaluateFn(element.getAttribute('v-if')||
            element.getAttribute('v-else-if')||
            'true',vm)
        }
    });
    const updateVisibility = ()=>{
        //先处理初次渲染的逻辑
        //用来标记是否已经有一个元素被插入了
        let firstVisibleElementInserted = false;
        elementsData.forEach(({placeholder,element,evaluate})=>{debugger
            //获取注释节点的父节点#app
            const {parentNode} = placeholder;
            //调用计算函数，计算表达式的结果,判断要不要显示
            const shouldDisplay = evaluate();
            //判断当前的元素是否已经显示在页面上了,是否已经显示在页面上了
            const isDisplayed = parentNode.contains(element);
            //应该显示，并且还没有任何一个元素被插进来
            if(shouldDisplay && !firstVisibleElementInserted){
                //判断一下此元素是否处于显示状态了
                if(!isDisplayed){
                    //没有没有的话插入
                    parentNode.insertBefore(element,placeholder);
                }
                //因为已经有一个元素插入了，把firstVisibleElementInserted改为true
                firstVisibleElementInserted=true;
            }else if(isDisplayed){
                parentNode.removeChild(element);
            }
        });
    }
    //初次渲染的时候调用一次
    updateVisibility();
    //创建一个观察者，观察vm上的value属性，当属性的值发生变化的时候重新计算可见性
    new Watcher(vm,'score',updateVisibility);
}